/**
 * 
 */
package ifpb.edu;

import java.io.IOException;
import java.util.Scanner;
import java.util.TreeSet;

import com.sun.media.sound.FFT;

/**
 * @author Ricardo & Erick
 *
 */
public class Main {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Inicializar start = new Inicializar();
		start.inicializarArquivo("agencia.ser");
		start.inicializarArquivo("cliente.ser");
		
		int op=0;
		char tipoConta = 0;
		Scanner in = new Scanner(System.in);
		Menu m = new Menu();
		Banco banco = new Banco();
		
		
		do {
	
		op= m.MenuPrincipal();
		System.out.println("Passou, opção: " + op);
		switch (op){
			
			case 1://cadastrar agência 
			
				System.out.println("\nDigite o nome da agência: ");
				String nome = in.nextLine();
				System.out.println("\nDigite o prefixo: ");
				String prefixo = in.nextLine();
				Agencia a = new Agencia(nome, prefixo);
				banco.cadastrarAgencia(a);
				
			break;
			case 2: //cadastrar cliente
				System.out.println("Digite o nome do cliente");
				String nomeCliente = in.nextLine();
				System.out.println("Digite seu CPF");
				String cpf = in.nextLine();
				Cliente c = new Cliente(nomeCliente, cpf);
				System.out.println(c.toString());
				if (banco.cadastrarCliente(c)) System.out.println("cliente cadastrado com sucesso");
				else System.out.println("cliente já cadastrado");
			break;
			case 3: //cadastrar cliente na agência
				System.out.println("Digite o prefixo da agência: ");
				String prefixoAgencia = in.nextLine();
				Agencia ag = new Agencia(prefixoAgencia);
				
				TreeSet<Agencia> arvAgencia = new TreeSet<Agencia>();
				try {
					arvAgencia = banco.lerNoBancoDeDados("agencia.ser");
				} catch (ClassNotFoundException | IOException e1) {
				System.out.println("errouuuu!!!!!!!!");
				}
				
				System.out.println("ate aqui passou!");
				if (arvAgencia.contains(ag)){
			
					System.out.println("Digite o cpf do cliente: ");
					String cpf1 = in.nextLine();
					Cliente c1 = new Cliente(cpf1);
			
					try {
				
						TreeSet<Cliente> arvoreCliente = banco.lerNoBancoDeDados("cliente.ser");
						if(arvoreCliente.contains(c1)) banco.cadastrarClienteAgencia (ag, c1);
						else System.out.println("Cliente não cadastrado");
		
					} catch (ClassNotFoundException | IOException e) {
						System.out.println("erro!!");
					}
				}else System.out.println("Agência não encontrada: ");
			break;
			case 4:// cadastrar cliente na agência
					System.out.println("Digite o prefixo da agência: ");
					String prefixo1 = in.nextLine();
					System.out.println("Digite o cpf do cliente");
					String cpf2 = in.nextLine();
					Cliente cliente1 = banco.PesquisarClienteAgencia(prefixo1, cpf2);
									
					if(cliente1!=null){
						System.out.println(cliente1.toString());
					}else System.out.println("Agencia ou cliente não localizado");
				
				
			break;
			case 5://excluir cliente da agência
					System.out.println("Digite o prefixo da agência: ");
					String prefixoAg = in.nextLine();
					Agencia ag1 = new Agencia(prefixoAg);
					System.out.println("Digite o CPF do cliente");
					String cpf3 = in.nextLine();
					if(banco.excluirClienteAgencia(ag1, cpf3)) System.out.println("Cliente excluído com sucesso");
					else System.out.println("Agência ou cliente não localizado, operação falhou!");
			
			break;
			case 6://cadastrar Conta
					System.out.println("Digite o prefixo da agência: ");
					String prefixo6 = in.nextLine();
					System.out.println("Digite o cpf do cliente: ");
					String cpf6 = in.next();
					int opcao;
					do{
					System.out.println("Digite o tipo da conta:\n" +
										"1 - conta corrente\n" +
										"2 - conta poupança\n");
					opcao = in.nextInt();
					}while(op!=1 || op!=2);
					
					banco.abrirConta(prefixo6, cpf6, tipoConta);
			break;
			case 15:
				System.out.println("xauu!!!");
			break;
			
			default: System.out.println("Error, opção inválida");
			
		
		}//fim do switch

		}while (op!=15);//fim do do/while
	
	}//fim do método main

}
